package entity.Administracion;
import javax.persistence.*;

import administracion.Gestor_Administracion;
import dto.Administracion.DTO_Rol;
import dto.Administracion.DTO_Usuario;

import java.util.Date;
import java.util.List;

@Entity
@Table(name="Usuario")
public class Entity_Usuario {
	@Id 
	private String usuario;
	@Column(name="pass")
	private String password;
	private Date fechaCreacion;
	private Date ultimoAcceso;
	@ManyToMany
	@JoinTable(name="UsuarioRol",
        joinColumns=
            @JoinColumn(name="Usuario"),
        inverseJoinColumns=
            @JoinColumn(name="idRol"))	
	private List<Entity_Rol> roles;
	@ManyToOne
	@JoinColumn(name="idEmpleado")
	private Entity_Empleado empleado;
	
	
	public void Usuario() {
	
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Date getUltimoAcceso() {
		return ultimoAcceso;
	}

	public void setUltimoAcceso(Date ultimoAcceso) {
		this.ultimoAcceso = ultimoAcceso;
	}
	
	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public List<Entity_Rol> getRoles() {
		return roles;
	}

	public void setRoles(List<Entity_Rol> roles) {
		this.roles = roles;
	}

	public Entity_Empleado getEmpleado() {
		return empleado;
	}

	public void setEmpleado(Entity_Empleado empleado) {
		this.empleado = empleado;
	}

	public DTO_Usuario toDTO(){
		DTO_Usuario u = new DTO_Usuario();
		u.setUsuario(this.getUsuario());
		u.setPassword(this.getPassword());
		u.setFechaCreacion(this.getFechaCreacion());
		u.setUltimoAcceso(this.getUltimoAcceso());
		List<DTO_Rol> lista = Gestor_Administracion.getInstancia().buscarRolesUsuario(this.getUsuario());
		if(lista != null)
			u.setRoles(lista);
		if(this.getEmpleado() != null)
			u.setIdEmpleado(this.getEmpleado().getId());
		return u;
	}
	
	

}
